home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok51 / steprate / steprate.mod < prev    next >
Text File  |  1993-11-04  |  2KB  |  84 lines

  1. (*-------------------------------------------------------------------------
  2. :Program.       StepRate.mod
  3. :Contents.      Little tool to set the steprates of the Amiga drives
  4. :Author.        Christian Stiens
  5. :Address.       Heustiege 2, W-4710 Lüdinghausen
  6. :Copyright.     PD
  7. :Language.      Oberon
  8. :Translator.    Amiga Oberon V1.17.1 A+L
  9. :History.       V1.0
  10. :Usage.         Steprate {<DFx:> <#Stepdelay|SHOW>}
  11. -------------------------------------------------------------------------*)
  12.  
  13. MODULE StepRate;
  14.  
  15.   (* $OvflChk- $RangeChk- $CaseChk- $NilChk- $StackChk- $ReturnChk- *)
  16.  
  17.   IMPORT
  18.     a    : Arguments,
  19.     c    : Conversions,
  20.     e    : Exec,
  21.     str  : Strings,
  22.     sys  : SYSTEM,
  23.     td   : TrackDisk,
  24.     io   : io;
  25.  
  26.   CONST
  27.     usage = "Usage: Steprate {<DFx:> <#Stepdelay|SHOW>}\n";
  28.     cantOpen = "Can't open trackdisk device\n";
  29.  
  30.   VAR
  31.     ior    : e.IOStdReq;
  32.     arg    : ARRAY 80 OF CHAR;
  33.     tduPt  : POINTER TO ARRAY 4 OF POINTER TO td.TDUPublicUnit;
  34.     delay  : LONGINT;
  35.     drive  : INTEGER;
  36.     show   : BOOLEAN;
  37.     narg   : INTEGER;
  38.     nr     : INTEGER;
  39.  
  40. BEGIN
  41.   narg := a.NumArgs();
  42.   IF (narg < 2) OR ODD(narg) THEN
  43.     io.WriteString(usage); HALT(0)
  44.   END;
  45.   IF e.OpenDevice(td.trackDiskName,0,sys.ADR(ior),LONGSET{}) # 0 THEN
  46.     io.WriteString(cantOpen); HALT(0)
  47.   END;
  48.   tduPt := sys.VAL(LONGINT,ior.device) + 24H;
  49.   nr := 1;
  50.   WHILE nr <= narg DO
  51.     a.GetArg(nr,arg); str.Upper(arg);
  52.     IF (arg[0] = "D") & (arg[1] = "F") THEN
  53.       drive := ORD(arg[2]) - ORD("0");
  54.       IF (drive >= 0) & (drive <= 3) THEN
  55.         a.GetArg(nr+1,arg); str.Upper(arg);
  56.         IF c.StringToInt(arg,delay) THEN
  57.           IF delay < 1500 THEN delay := 1500 END;
  58.           show := FALSE
  59.         ELSE
  60.           show := TRUE;
  61.         END;
  62.         IF tduPt[drive] # 0 THEN
  63.           IF show THEN
  64.             io.WriteString("Stepdelay of drive DF");
  65.             io.WriteInt(drive,1);
  66.             io.WriteString(": is ");
  67.             io.WriteInt(tduPt[drive].stepDelay,1); io.WriteLn;
  68.           ELSE
  69.             tduPt[drive].stepDelay := delay
  70.           END;
  71.         ELSE
  72.           io.WriteString("Drive DF");
  73.           io.WriteInt(drive,1);
  74.           io.WriteString(": is not connected\n")
  75.         END
  76.       END
  77.     END;
  78.     INC(nr,2)
  79.   END; (* WHILE *)
  80.   e.CloseDevice(sys.ADR(ior));
  81. END StepRate.
  82.  
  83.  
  84.